{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 加载模型用于推理或迁移学习\n",
    "\n",
    "## 概述\n",
    "\n",
    "\n",
    "在模型训练过程中保存在本地的CheckPoint文件，或从MindSpore Hub下载的CheckPoint文件，都可以帮助用户进行推理或迁移学习使用，提高效率。\n",
    "\n",
    "以下通过示例来介绍如何通过本地加载加载模型，用于推理验证和迁移学习。\n",
    "\n",
    "> 本文档适用于CPU、GPU和Ascend环境。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 整体流程\n",
    "\n",
    "1. 准备环节。下载数据集，配置运行信息。\n",
    "2. 数据处理。创建可用于网络训练的数据集，可视化数据集图像。\n",
    "3. 预训练模型。生成CheckPoint文件。\n",
    "4. 本地加载模型用于推理验证。\n",
    "5. 本地加载模型用于迁移学习。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##  准备环节\n",
    "\n",
    "### 下载数据集\n",
    "\n",
    "运行以下一段代码,将数据集下载至当前工作目录中`./datasets/MNIST_Data`目录下。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "--2020-11-30 16:32:07--  https://obs.dualstack.cn-north-4.myhuaweicloud.com/mindspore-website/notebook/datasets/MNIST_Data.zip\n",
      "Resolving proxy-notebook.modelarts-dev-proxy.com (proxy-notebook.modelarts-dev-proxy.com)... 192.168.0.172\n",
      "Connecting to proxy-notebook.modelarts-dev-proxy.com (proxy-notebook.modelarts-dev-proxy.com)|192.168.0.172|:8083... connected.\n",
      "Proxy request sent, awaiting response... 200 OK\n",
      "Length: 10754903 (10M) [application/zip]\n",
      "Saving to: ‘MNIST_Data.zip’\n",
      "\n",
      "MNIST_Data.zip      100%[===================>]  10.26M  --.-KB/s    in 0.06s   \n",
      "\n",
      "2020-11-30 16:32:07 (160 MB/s) - ‘MNIST_Data.zip’ saved [10754903/10754903]\n",
      "\n",
      "Archive:  MNIST_Data.zip\n",
      "   creating: MNIST_Data/test/\n",
      "  inflating: MNIST_Data/test/t10k-images-idx3-ubyte  \n",
      "  inflating: MNIST_Data/test/t10k-labels-idx1-ubyte  \n",
      "   creating: MNIST_Data/train/\n",
      "  inflating: MNIST_Data/train/train-images-idx3-ubyte  \n",
      "  inflating: MNIST_Data/train/train-labels-idx1-ubyte  \n",
      "./datasets/MNIST_Data/\n",
      "├── test\n",
      "│   ├── t10k-images-idx3-ubyte\n",
      "│   └── t10k-labels-idx1-ubyte\n",
      "└── train\n",
      "    ├── train-images-idx3-ubyte\n",
      "    └── train-labels-idx1-ubyte\n",
      "\n",
      "2 directories, 4 files\n"
     ]
    }
   ],
   "source": [
    "!wget -N https://obs.dualstack.cn-north-4.myhuaweicloud.com/mindspore-website/notebook/datasets/MNIST_Data.zip\n",
    "!unzip -o MNIST_Data.zip -d ./datasets\n",
    "!tree ./datasets/MNIST_Data/"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 配置运行环境\n",
    "\n",
    "运行以下一段代码，配置训练网络参数，配置运行平台为CPU，并指定模型文件目录和数据集目录。\n",
    "\n",
    "相关参数含义为：\n",
    "\n",
    "- `device_target`：硬件平台。\n",
    "- `data_pat`：数据集目录。\n",
    "- `ckpt_path`：训练后的模型文件存放目录。\n",
    "- `epoch_size`：迭代训练次数。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "\"\"\"\n",
    "network config setting, will be used in train.py\n",
    "\"\"\"\n",
    "\n",
    "from easydict import EasyDict as edict\n",
    "from mindspore import context\n",
    "\n",
    "\n",
    "args = edict({\n",
    "    'device_target': 'CPU',\n",
    "    'data_path': './datasets/MNIST_Data',\n",
    "    'ckpt_path': './models/ckpt/mindspore_load_model_for_inference_and_transfer/',\n",
    "    'num_classes': 10,\n",
    "    'lr': 0.01,\n",
    "    'momentum': 0.9,\n",
    "    'epoch_size': 1,\n",
    "    'batch_size': 32,\n",
    "    'buffer_size': 1000,\n",
    "    'image_height': 32,                                                                                                                                                                                             \n",
    "    'image_width': 32,\n",
    "    'save_checkpoint_steps': 1875,\n",
    "    'keep_checkpoint_max': 10,\n",
    "    'air_name': \"lenet.air\",\n",
    "})\n",
    "\n",
    "\n",
    "context.set_context(mode=context.GRAPH_MODE, device_target=args.device_target)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "以下一段代码中定义预训练模型使用的损失函数`CrossEntropyLoss`。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "import mindspore.nn as nn\n",
    "from mindspore import Tensor\n",
    "import mindspore.ops as ops\n",
    "from mindspore import dtype as mstype\n",
    "\n",
    "\n",
    "class CrossEntropyLoss(nn.Cell):\n",
    "    def __init__(self):\n",
    "        super(CrossEntropyLoss, self).__init__()\n",
    "        self.cross_entropy = ops.SoftmaxCrossEntropyWithLogits()\n",
    "        self.mean = ops.ReduceMean()\n",
    "        self.one_hot = ops.OneHot()\n",
    "        self.one = Tensor(1.0, mstype.float32)\n",
    "        self.zero = Tensor(0.0, mstype.float32)\n",
    "\n",
    "    def construct(self, logits, label):\n",
    "        label = self.one_hot(label, ops.shape(logits)[1], self.one, self.zero)\n",
    "        loss_func = self.cross_entropy(logits, label)[0]\n",
    "        loss_func = self.mean(loss_func, (-1,))\n",
    "        return loss_func"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 数据预处理\n",
    "\n",
    "使用`create_dataset`函数来创建数据集，对数据集进行预处理操作。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "import mindspore.dataset as ds\n",
    "import mindspore.dataset.vision.c_transforms as CV\n",
    "import mindspore.dataset.transforms.c_transforms as C\n",
    "from mindspore.dataset.vision import Inter\n",
    "from mindspore import dtype as mstype\n",
    "\n",
    "def create_dataset(data_path, batch_size=32, repeat_size=1,\n",
    "                   num_parallel_workers=1):\n",
    "    \"\"\"\n",
    "    create dataset for train or test\n",
    "    \"\"\"\n",
    "    # define dataset\n",
    "    mnist_ds = ds.MnistDataset(data_path)\n",
    "\n",
    "    resize_height, resize_width = 32, 32\n",
    "    rescale = 1.0 / 255.0\n",
    "    shift = 0.0\n",
    "    rescale_nml = 1 / 0.3081\n",
    "    shift_nml = -1 * 0.1307 / 0.3081\n",
    "\n",
    "    # define map operations\n",
    "    resize_op = CV.Resize((resize_height, resize_width), interpolation=Inter.LINEAR)  # Bilinear mode\n",
    "    rescale_nml_op = CV.Rescale(rescale_nml, shift_nml)\n",
    "    rescale_op = CV.Rescale(rescale, shift)\n",
    "    hwc2chw_op = CV.HWC2CHW()\n",
    "    type_cast_op = C.TypeCast(mstype.int32)\n",
    "\n",
    "    # apply map operations on images\n",
    "    mnist_ds = mnist_ds.map(operations=type_cast_op, input_columns=\"label\", num_parallel_workers=num_parallel_workers)\n",
    "    mnist_ds = mnist_ds.map(operations=resize_op, input_columns=\"image\", num_parallel_workers=num_parallel_workers)\n",
    "    mnist_ds = mnist_ds.map(operations=rescale_op, input_columns=\"image\", num_parallel_workers=num_parallel_workers)\n",
    "    mnist_ds = mnist_ds.map(operations=rescale_nml_op, input_columns=\"image\", num_parallel_workers=num_parallel_workers)\n",
    "    mnist_ds = mnist_ds.map(operations=hwc2chw_op, input_columns=\"image\", num_parallel_workers=num_parallel_workers)\n",
    "\n",
    "    # apply DatasetOps\n",
    "    buffer_size = 10000\n",
    "    mnist_ds = mnist_ds.shuffle(buffer_size=buffer_size)  # 10000 as in LeNet train script\n",
    "    mnist_ds = mnist_ds.batch(batch_size, drop_remainder=True)\n",
    "    mnist_ds = mnist_ds.repeat(repeat_size)\n",
    "\n",
    "    return mnist_ds\n",
    "\n",
    "\n",
    "ds_train = create_dataset(os.path.join(args.data_path, \"train\"), args.batch_size)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 可视化数据集\n",
    "\n",
    "使用`matplotlib`可视化工具查看第一个batch中的32张图像。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The 32 images with label of the first batch in ds_train are showed below:\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x576 with 32 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from matplotlib import pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "\n",
    "print(\"The 32 images with label of the first batch in ds_train are showed below:\")\n",
    "ds_iterator = ds_train.create_dict_iterator()\n",
    "ds_iterator.get_next()\n",
    "batch_1 = ds_iterator.get_next()\n",
    "batch_image = batch_1[\"image\"].asnumpy()\n",
    "batch_label = batch_1[\"label\"].asnumpy()\n",
    "%matplotlib inline\n",
    "plt.figure(dpi=144)\n",
    "for i,image in enumerate(batch_image):\n",
    "    plt.subplot(4, 8, i+1)\n",
    "    plt.subplots_adjust(wspace=0.2, hspace=0.2)\n",
    "    plt.imshow(np.squeeze(image), cmap='gray')\n",
    "    plt.title(f\"image {i+1}\\nlabel: {batch_label[i]}\", y=-0.65, fontdict={\"fontsize\":8})\n",
    "    plt.axis('off')    \n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 定义网络\n",
    "\n",
    "使用下面一段代码定义LeNet网络"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "import mindspore.nn as nn\n",
    "from mindspore.common.initializer import Normal\n",
    "\n",
    "class LeNet5(nn.Cell):\n",
    "    \"\"\"Lenet network structure.\"\"\"\n",
    "    # define the operator required\n",
    "    def __init__(self, num_class=10, num_channel=1):\n",
    "        super(LeNet5, self).__init__()\n",
    "        self.conv1 = nn.Conv2d(num_channel, 6, 5, pad_mode='valid')\n",
    "        self.conv2 = nn.Conv2d(6, 16, 5, pad_mode='valid')\n",
    "        self.fc1 = nn.Dense(16 * 5 * 5, 120, weight_init=Normal(0.02))\n",
    "        self.fc2 = nn.Dense(120, 84, weight_init=Normal(0.02))\n",
    "        self.fc3 = nn.Dense(84, num_class, weight_init=Normal(0.02))\n",
    "        self.relu = nn.ReLU()\n",
    "        self.max_pool2d = nn.MaxPool2d(kernel_size=2, stride=2)\n",
    "        self.flatten = nn.Flatten()\n",
    "\n",
    "    # use the preceding operators to construct networks\n",
    "    def construct(self, x):\n",
    "        x = self.max_pool2d(self.relu(self.conv1(x)))\n",
    "        x = self.max_pool2d(self.relu(self.conv2(x)))\n",
    "        x = self.flatten(x)\n",
    "        x = self.relu(self.fc1(x))\n",
    "        x = self.relu(self.fc2(x))\n",
    "        x = self.fc3(x) \n",
    "        return x"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 预训练模型\n",
    "\n",
    "运行以下一段代码进行预训练，生成后续加载模型进行推理或迁移学习所需的预训练模型CheckPoint文件。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "============== Starting Training ==============\n",
      "epoch: 1 step: 375, loss is 2.2881835\n",
      "epoch: 1 step: 750, loss is 2.311615\n",
      "epoch: 1 step: 1125, loss is 0.03919042\n",
      "epoch: 1 step: 1500, loss is 0.10693374\n",
      "epoch: 1 step: 1875, loss is 0.19927995\n",
      "Epoch time: 18645.494, per step time: 9.944\n"
     ]
    }
   ],
   "source": [
    "import mindspore.nn as nn\n",
    "from mindspore.train.callback import ModelCheckpoint, CheckpointConfig, LossMonitor, TimeMonitor\n",
    "from mindspore import Model\n",
    "from mindspore.nn.metrics import Accuracy\n",
    "import os \n",
    "\n",
    "# clean up old run files before in Linux\n",
    "os.system('rm -f {}*.ckpt {}*.meta {}*.pb'.format(args.ckpt_path,args.ckpt_path,args.ckpt_path))\n",
    "\n",
    "network = LeNet5(args.num_classes)\n",
    "net_loss = CrossEntropyLoss()\n",
    "net_opt = nn.Momentum(network.trainable_params(), args.lr, args.momentum)\n",
    "time_cb = TimeMonitor(data_size=ds_train.get_dataset_size())\n",
    "config_ck = CheckpointConfig(save_checkpoint_steps=args.save_checkpoint_steps,\n",
    "                             keep_checkpoint_max=args.keep_checkpoint_max)\n",
    "ckpoint_cb = ModelCheckpoint(prefix=\"checkpoint_lenet\", directory=args.ckpt_path, config=config_ck)\n",
    "model = Model(network, net_loss, net_opt, metrics={\"Accuracy\": Accuracy()})\n",
    "\n",
    "print(\"============== Starting Training ==============\")\n",
    "model.train(args['epoch_size'], ds_train, callbacks=[time_cb, ckpoint_cb, LossMonitor(per_print_times=375)], dataset_sink_mode=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "预训练完成后，在`ckpt`目录下生成CheckPoint模型文件（`checkpoint_lenet-1_1875.ckpt`文件）。此时`ckpt`目录结构如下："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "./models/ckpt/mindspore_load_model_for_inference_and_transfer\n",
      "├── checkpoint_lenet-1_1875.ckpt\n",
      "└── checkpoint_lenet-graph.meta\n",
      "\n",
      "0 directories, 2 files\n"
     ]
    }
   ],
   "source": [
    "!tree ./models/ckpt/mindspore_load_model_for_inference_and_transfer"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 加载模型用于推理验证\n",
    "\n",
    "针对仅推理场景可以使用`load_checkpoint`方法把参数直接加载到网络中，以便进行后续的推理验证。\n",
    "\n",
    "使用`load_checkpoint`方法，导入预训练模型文件`checkpoint_lenet-1_1875.ckpt`中的参数到网络中。\n",
    "\n",
    "其中：\n",
    "- `load_checkpoint`方法会把参数文件中的网络参数加载到模型中。加载后，网络中的参数就是CheckPoint保存的参数。\n",
    "- `eval`方法会验证训练后模型的精度。\n",
    "\n",
    "运行以下一段代码，进行本地模型加载进行推理验证，得到推理精度值数据。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "============== Starting Testing ==============\n",
      "============== {'Accuracy': 0.9668469551282052} ==============\n"
     ]
    }
   ],
   "source": [
    "import os\n",
    "import mindspore.nn as nn\n",
    "from mindspore import load_checkpoint, load_param_into_net\n",
    "from mindspore import Model\n",
    "from mindspore.nn.metrics import Accuracy\n",
    "\n",
    "\n",
    "network = LeNet5(args.num_classes)\n",
    "net_loss = CrossEntropyLoss()\n",
    "load_checkpoint(ckpt_file_name=\"./models/ckpt/mindspore_load_model_for_inference_and_transfer/checkpoint_lenet-1_1875.ckpt\", net=network)\n",
    "model = Model(network, net_loss, metrics={\"Accuracy\": Accuracy()})\n",
    "\n",
    "print(\"============== Starting Testing ==============\")\n",
    "ds_eval = create_dataset(os.path.join(args.data_path, \"test\"),\n",
    "                         args.batch_size,\n",
    "                         1)\n",
    "\n",
    "acc = model.eval(ds_eval, dataset_sink_mode=False)\n",
    "print(\"============== {} ==============\".format(acc))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "通过运行的输出结果得到推理精度达到0.96以上。\n",
    "\n",
    "## 加载模型用于迁移学习\n",
    "\n",
    "针对任务中断再训练及微调（Fine Tune）场景，可以加载网络参数和优化器参数到模型中。\n",
    "\n",
    "同理，使用`load_checkpoint`接口导入预训练模型文件`checkpoint_lenet-3_1875.ckpt`，并使用`load_param_into_net`接口将预训练模型参数加载进网络中。\n",
    "\n",
    "其中：\n",
    "- `load_checkpoint`方法会返回一个预训练模型中的参数字典。\n",
    "- `load_param_into_net`会把参数字典中相应的参数加载到网络或优化器中。\n",
    "\n",
    "运行以下一段代码，进行本地模型加载并进行迁移学习（重训练）。在重训练过程中使用损失函数`SoftmaxCrossEntropyWithLogits`。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "============== Starting Training ==============\n",
      "epoch: 1 step: 375, loss is 0.011971839\n",
      "epoch: 1 step: 750, loss is 0.010163541\n",
      "epoch: 1 step: 1125, loss is 0.12516475\n",
      "epoch: 1 step: 1500, loss is 0.22787872\n",
      "epoch: 1 step: 1875, loss is 0.15650317\n",
      "Epoch time: 18165.255, per step time: 9.688\n",
      "epoch: 2 step: 375, loss is 0.04129391\n",
      "epoch: 2 step: 750, loss is 0.19876541\n",
      "epoch: 2 step: 1125, loss is 0.04154645\n",
      "epoch: 2 step: 1500, loss is 0.011596533\n",
      "epoch: 2 step: 1875, loss is 0.21028273\n",
      "Epoch time: 17832.701, per step time: 9.511\n",
      "epoch: 3 step: 375, loss is 0.12846899\n",
      "epoch: 3 step: 750, loss is 0.0042161625\n",
      "epoch: 3 step: 1125, loss is 0.024917062\n",
      "epoch: 3 step: 1500, loss is 0.024145193\n",
      "epoch: 3 step: 1875, loss is 0.031243846\n",
      "Epoch time: 17812.343, per step time: 9.500\n"
     ]
    }
   ],
   "source": [
    "network = LeNet5(args.num_classes)\n",
    "net_opt = nn.Momentum(network.trainable_params(), args.lr, args.momentum)\n",
    "\n",
    "# return a parameter dict for model\n",
    "param_dict = load_checkpoint(ckpt_file_name=\"./models/ckpt/mindspore_load_model_for_inference_and_transfer/checkpoint_lenet-1_1875.ckpt\")\n",
    "# load the parameter into net\n",
    "load_param_into_net(network, param_dict)\n",
    "# load the parameter into operator\n",
    "load_param_into_net(net_opt, param_dict)\n",
    "net_loss = nn.SoftmaxCrossEntropyWithLogits(sparse=True, reduction=\"mean\")\n",
    "time_cb = TimeMonitor(data_size=ds_train.get_dataset_size())\n",
    "config_ck = CheckpointConfig(save_checkpoint_steps=args.save_checkpoint_steps,\n",
    "                             keep_checkpoint_max=args.keep_checkpoint_max)\n",
    "ckpoint_cb = ModelCheckpoint(prefix=\"checkpoint_lenet\", directory=args.ckpt_path, config=config_ck)\n",
    "model = Model(network, net_loss, net_opt, metrics={\"Accuracy\": Accuracy()})\n",
    "ds_train = create_dataset(os.path.join(args.data_path, \"train\"), args.batch_size)\n",
    "\n",
    "print(\"============== Starting Training ==============\")\n",
    "model.train(3, ds_train, callbacks=[time_cb, ckpoint_cb, LossMonitor(per_print_times=375)], dataset_sink_mode=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "完成重训练后，将在CheckPoint文件保存目录生成新的CheckPoint文件。此时`./ckpt`目录结构为："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "./models/ckpt/mindspore_load_model_for_inference_and_transfer\n",
      "├── checkpoint_lenet_1-1_1875.ckpt\n",
      "├── checkpoint_lenet-1_1875.ckpt\n",
      "├── checkpoint_lenet_1-2_1875.ckpt\n",
      "├── checkpoint_lenet_1-3_1875.ckpt\n",
      "├── checkpoint_lenet_1-graph.meta\n",
      "└── checkpoint_lenet-graph.meta\n",
      "\n",
      "0 directories, 6 files\n"
     ]
    }
   ],
   "source": [
    "!tree ./models/ckpt/mindspore_load_model_for_inference_and_transfer"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "可以看出重训练保存的新的CheckPoint文件为`checkpoint_lenet_1-3_1875.ckpt`。\n",
    "\n",
    "运行以下一段代码，使用`eval`方法测试加载模型重训练后的得到的新的模型的精度。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "============== Starting Testing ==============\n",
      "============== {'Accuracy': 0.9827724358974359} ==============\n"
     ]
    }
   ],
   "source": [
    "network = LeNet5(args.num_classes)\n",
    "net_loss = nn.SoftmaxCrossEntropyWithLogits(sparse=True, reduction=\"mean\")\n",
    "net_opt = nn.Momentum(network.trainable_params(), args.lr, args.momentum)\n",
    "model = Model(network, net_loss, net_opt, metrics={\"Accuracy\": Accuracy()})\n",
    "\n",
    "print(\"============== Starting Testing ==============\")\n",
    "load_checkpoint(ckpt_file_name=\"./models/ckpt/mindspore_load_model_for_inference_and_transfer/checkpoint_lenet_1-3_1875.ckpt\", net=network)\n",
    "ds_eval = create_dataset(os.path.join(args.data_path, \"test\"),\n",
    "                         args.batch_size,\n",
    "                         1)\n",
    "\n",
    "acc = model.eval(ds_eval, dataset_sink_mode=False)\n",
    "print(\"============== {} ==============\".format(acc))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "通过输出结果，得到重训练后模型的精度达到0.98以上，优于使用预训练得到的模型进行推理的精度。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 总结\n",
    "\n",
    "通过以上流程，完成了在本地加载预训练模型并用于推理验证和迁移学习的体验过程，了解了使用MindSpore的`load_checkpoint`方法和`load_param_into_net`方法加载模型的方式和过程。通过加载模型进行验证或迁移学习，可以在提高精度的同时有效减少训练时间，减小数据集规模，提高开发效率。"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "MindSpore-1.0.1",
   "language": "python",
   "name": "mindspore-1.0.1"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
